Analyzing reading metrics

ABSTRACT

Data reports are received from a plurality of clients including action reports and timing reports. Action reports describe actions performed by users of the clients at location within an eBook. Timing reports describe reading speeds of users of the clients. The data reports are analyzed to identify an action that is performed by the users of the clients at a location within the eBook frequently relative to other actions. Action information is generated for automatically performing the identified action at the location within the eBook. The action information is transmitted to a client. The client is configured to automatically perform the action at the location within the eBook. The reading location of a user of the client is determined based on the timing reports.

1. CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.13/709,262, filed on Dec. 10, 2012, which is incorporated by referencein its entirety.

2. FIELD OF DISCLOSURE

The invention generally relates to electronic books (eBooks) andparticularly relates to analyzing reading metrics about the reading ofsuch books.

3. BACKGROUND INFORMATION

Many people are transitioning from reading physical books to readingeBooks, which have many advantages over physical books, such as moreportability, the ability to access the eBook from multiple electronicdevices, and text search capability. In addition, eBooks are also easierto purchase and are perceived as environmentally-friendly. However,reading devices for eBooks do not take full advantage of opportunitiesfor improving the reading experience that are possible with eBooks.

SUMMARY

The above and other issues are addressed by a computer-implementedmethod, computer system, and non-transitory computer-readable storagemedium for using eBook reading metrics to generate action information.An embodiment of the method includes receiving data reports from aplurality of clients, the data reports comprising action reportsdescribing actions performed by users of the clients at locations withinan eBook. The data reports are analyzed to identify an action that isperformed by the users of the clients at a location within the eBook.Action information is generated for automatically performing theidentified action at the location within the eBook. The actioninformation is transmitted to a client. The client is adapted to use theaction information to automatically perform the action at the locationwithin the eBook.

An embodiment of the computer system for using eBook reading metrics togenerate action information includes a non-transitory computer-readablestorage medium having executable computer program instructions. Theinstructions include instructions for receiving data reports from aplurality of clients, the data reports comprising action reportsdescribing actions performed by users of the clients at locations withinan eBook. The data reports are analyzed to identify an action that isperformed by the users of the clients at a location within the eBook.Action information is generated for automatically performing theidentified action at the location within the eBook. The actioninformation is transmitted to a client. The client is adapted to use theaction information to automatically perform the action at the locationwithin the eBook. The computer system also includes a processor forexecuting the computer program instructions.

An embodiment of the medium stores executable computer programinstructions for using eBook reading metrics to generate actioninformation. The instructions perform steps including receiving datareports from a plurality of clients, the data reports comprising actionreports describing actions performed by users of the clients atlocations within an eBook. The data reports are analyzed to identify anaction that is performed by the users of the clients at a locationwithin the eBook. Action information is generated for automaticallyperforming the identified action at the location within the eBook. Theaction information is transmitted to a client. The client is adapted touse the action information to automatically perform the action at thelocation within the eBook.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a high-level block diagram illustrating an environment foranalyzing eBook reading metrics and generating action information inaccordance with one embodiment.

FIG. 2 is a high-level block diagram illustrating an example of acomputer for use as a metric server or a client, in accordance with oneembodiment.

FIG. 3 is a high-level block diagram illustrating a detailed view of thereading module of a client according to one embodiment.

FIG. 4 is a high-level block diagram illustrating a detailed view of themetric server according to one embodiment.

FIG. 5 is a flowchart illustrating a method of analyzing eBook readingmetrics to generate action information that is transmitted to a clientaccording to one embodiment.

DETAILED DESCRIPTION

The figures (FIGS.) and the following description describe certainembodiments by way of illustration only. One skilled in the art willreadily recognize from the following description that alternativeembodiments of the structures and methods illustrated herein may beemployed without departing from the principles described herein.Reference will now be made to several embodiments, examples of which areillustrated in the accompanying figures. It is noted that whereverpracticable similar or like reference numbers may be used in the figuresand may indicate similar or like functionality.

FIG. 1 is a high-level block diagram illustrating an environment 100 foranalyzing eBook reading metrics and generating action information inaccordance with one embodiment. As shown, the environment 100 includesmultiple clients 110 connected to a metric server 130 via a network 120.While only one metric server 130 and three clients 110 are shown in FIG.1 for clarity, embodiments can have multiple servers and many clients.Moreover, the metric server 130 may be implemented as cloud-basedservice distributed across multiple physical servers.

The clients 110 are electronic devices used by one or more users to readeBooks. A client 110 can be, for example, a mobile phone, desktop,laptop, or tablet computer, or a dedicated eBook reader (“eReader”). Theclient 110 may execute one or more applications that support activitiesincluding reading eBooks and browsing and obtaining content availablefrom servers on the network 120. For example, in one embodiment theclient 110 is a computer running a web browser displaying eBook contentfrom a remote website on the network 120. An eBook is a form ofelectronic content that is primarily textual in nature. The content ofan eBook may be, for example, a novel, a textbook, or a reference book.As used herein, the term “eBook” also includes other electronic contentthat is primarily textual, such as magazines, journals, newspapers, orother publications.

The clients 110 include display screens that show portions of eBooks tothe users. The portion of text shown on a display screen at one time isreferred to as a “page” of the eBook. The amount of text shown on a pageby a given client 110 depends upon multiple variables including the sizeof client's display screen and characteristics of the text such astypeface, font size, margin spacing and line spacing.

The user of a client 110 changes the pages of an eBook by issuingpage-turn commands. The type of command issued by the user can varybased on the client 110. For example, some clients 110 have physicalpage turn buttons that the user presses to advance to the next orprevious page. Other clients 110 have touch-sensitive display screensand the user issues a page-turn command by gesturing on the screen.

In one embodiment, the clients 110 include reading modules 112 thatrecord the time intervals (i.e., elapsed time) between page-turncommands issued by the users. Depending upon the embodiment, the readingmodules 112 can be integrated into firmware executed by the clients 110,integrated into operating systems executed by the clients, or containedwithin applications executed by the clients. For example, a readingmodule 112 may be implemented as JAVASCRIPT code executed by a webbrowser on a client 110. Users may be provided with an opportunity tocontrol whether time intervals are recorded.

During normal use of the client 110 for reading an eBook, the user willissue page-turn commands as the user reads each page and advances to thenext page. For clients 110 that replace the entire page of text inresponse to a page-turn command, the time interval between sequentialforward page-turn commands issued by a user is a proxy for the amount oftime it took the user to read the text on the page. Hence, the timeinterval is referred to as a “reading time interval.” The reading timeinterval will vary for different users having different reading speeds,and will also vary depending upon the amount of text shown on each pageand the complexity of the text. Reading time intervals may also includedata identifying the day, date and/or time at which the readingidentified by a reading time interval occurred.

Clients may also read text by scrolling rather than advancing throughdiscrete pages in a paginated eBook. In one embodiment, time intervalsare measured between locations in the text. The locations may bepredetermined or automatically generated periodically throughout thetext of an eBook. The time interval between sequential locations beingscrolled onto, or off of, a screen may serve as a proxy for the amountof time it took the user to read that section of text. In anotherembodiment, the reading position of a user may be directly observedthrough eye-tracking, and the time interval for reading between twosequential locations can be recorded.

In addition to recording reading time intervals, the reading modules 112may record additional actions performed on the clients 110 while eBookare read. Users may be provided with an opportunity to control whetheractions are recorded. During normal use of the client 110 for reading aneBook, the user may perform actions such as looking up the definitionsof word(s), requesting the translation of word(s), and addingannotations. For such actions, the reading modules 112 record datadescribing the action, such as the location in the eBook where theaction was performed and a timestamp indicating when the action wasperformed. The location in the eBook may be a reference to a portion oftext in the eBook, such as a word, sentence, paragraph, or page in theeBook. The reading module 112 may also record data indicating thegeographic location of the user at the time an action was performed orreading time interval was recorded. In one embodiment, permission isrequested from the user before detecting and recording the geographiclocation. The geographic location data is not detected or recordedabsent the user's permission.

The reading modules 112 send data reports to the metric server 130describing how the clients 110 are used for reading eBooks (i.e.,describing reading metrics). The data reports include timing reportsdescribing the recorded reading time intervals. In addition, the datareports include action reports describing the actions performed whenreading pages of eBooks. In one embodiment, permission is requested fromthe user for transmitting timing reports and/or action reports to themetric server 130.

The reading modules 112 also receive timing and action information fromthe metric server 130. A reading module 112 uses this information toautomatically perform certain actions when the user reads a certainportion of an eBook, such as automatically turning pages, definingwords, highlighting passages, etc. For example, the action informationmay instruct the reading module 112 to automatically define a word forwhich a definition is frequently requested by users of the clients 110.

In situations in which the entities discussed here collect personalinformation about users, or may make use of personal information, theusers may be provided with an opportunity to control whether programs orfeatures collect user information or to control whether and/or how toreceive content from the metric server 130 that may be relevant to theuser. In addition, certain data may be treated in one or more waysbefore it is stored or used, so that that personally identifiableinformation is removed. For example, a user's identity may be treated sothat no personally identifiable information can be determined for theuser. Thus, the user may have control over how information is collectedabout the user and used by the metric server 130.

The metric server 130 is a computer or other electronic device that usesthe data reports received from the clients 110 to generate timing andaction information describing the eBooks and users. The metric server130 may be operated by an entity that provides eBooks and otherelectronic content to the clients 110 or may be operated by a differententity.

In general, the metric server 130 uses the received data reports togenerate timing information regarding the reading of eBooks and toprovide the timing information, and generated action information, to theclients 110 in order to enhance the users' reading experiences. Forexample, the metric server 130 may use data reports received from thevarious clients 110 to determine the average time required by a group ofusers to read a given portion of an eBook, and to determine the readingspeeds of individual users. In one embodiment, the metric server 130provides timing and action information to the reading modules 112 of theclients 110 instructing a reading module 112 to automatically perform anaction based at least in part on the user's reading speed. For example,the action information may cause the definition of a word to beautomatically displayed as the user reads the word. Additionally, themetric server 130 may send a reading module 112 timing information thatallows the reading module to display individual reading statistics forthe user, as well as a dashboard comparing the user's reading statisticswith equivalent statistics for other users.

The network 120 represents the communication pathway between the metricserver 130 and clients 110. In one embodiment, the network 120 usesstandard communications technologies or protocols and can include theInternet. Thus, the network 120 can include links using technologiessuch as Ethernet, 802.11, worldwide interoperability for microwaveaccess (WiMAX), 2G/3G/4G mobile communications protocols, digitalsubscriber line (DSL), asynchronous transfer mode (ATM), InfiniBand, PCIExpress Advanced Switching, etc. Similarly, the networking protocolsused on the network 120 can include multiprotocol label switching(MPLS), the transmission control protocol/Internet protocol (TCP/IP),the User Datagram Protocol (UDP), the hypertext transport protocol(HTTP), the simple mail transfer protocol (SMTP), the file transferprotocol (FTP), etc. The data exchanged over the network 120 can berepresented using technologies or formats including image data in binaryform (e.g. Portable Network Graphics (PNG), the hypertext markuplanguage (HTML), the extensible markup language (XML), etc. In addition,all or some links can be encrypted using conventional encryptiontechnologies such as secure sockets layer (SSL), transport layersecurity (TLS), virtual private networks (VPNs), Internet Protocolsecurity (IPsec), etc. In another embodiment, the entities on thenetwork 120 can use custom or dedicated data communications technologiesinstead of, or in addition to, the ones described above.

FIG. 2 is a high-level block diagram illustrating an example of acomputer 200 for use as a metric server 130 or a client 110, inaccordance with one embodiment. Illustrated is at least one processor202 coupled to a chipset 204. The chipset 204 includes a memorycontroller hub 220 and an input/output (I/O) controller hub 222. Amemory 206 and a graphics adapter 212 are coupled to the memorycontroller hub 220, and a display device 218 is coupled to the graphicsadapter 212. A storage device 208, keyboard 210, pointing device 214,and network adapter 216 are coupled to the I/O controller hub 222. Otherembodiments of the computer 200 have different architectures. Forexample, the memory 206 is directly coupled to the processor 202 in someembodiments.

The storage device 208 is a non-transitory computer-readable storagemedium such as a hard drive, compact disk read-only memory (CD-ROM),DVD, or a solid-state memory device. The memory 206 holds instructionsand data used by the processor 202. The pointing device 214 is used incombination with the keyboard 210 to input data into the computer 200.The graphics adapter 212 displays images and other information on thedisplay device 218. In some embodiments, the display device 218 includestouch screen capability for receiving user input and selections. Thenetwork adapter 216 couples the computer system 200 to the network 120.Some embodiments of the computer 200 have different or other componentsthan those shown in FIG. 2. For example, the metric server 130 can beformed of multiple blade servers and lack a display device, keyboard,and other components.

The computer 200 is adapted to execute computer program modules forproviding functionality described herein. As used herein, the term“module” refers to computer program instructions and other logic used toprovide the specified functionality. Thus, a module can be implementedin hardware, firmware, or software. In one embodiment, program modulesformed of executable computer program instructions are stored on thestorage device 208, loaded into the memory 206, and executed by theprocessor 202.

FIG. 3 is a high-level block diagram illustrating a detailed view of thereading module 112 of a client 110 according to one embodiment. As shownin FIG. 3, multiple modules are included within the reading module 112.In some embodiments, the functions are distributed among the modules ina different manner than described herein. Moreover, the functions areperformed by other entities in some embodiments, such as by the metricserver 130.

A reading speed module 310 is configured to collect informationdescribing the reading speed of a user. Users may be provided with anopportunity to control whether reading speed information is collected.In one embodiment, the reading speed module 310 measures times betweenpage turn commands and stores the time periods between page turncommands as intervals. In one embodiment, the reading speed module 310activates a timer upon detecting a page-turn command and uses the timerto measure the time elapsed until a new page-turn command is detected.The reading speed module 310 stores the measured time intervals inassociation with the pages of the eBooks to which they pertain. Thereading speed module 310 may measure only forward page-turn commandsbecause backward page-turn commands are less likely to be reflective ofa user's reading speed. In addition, the reading speed module 310 maymeasure intervals between multiple page-turn commands and may activatethe timer in response to different events, such as the display of a newpage instead of the detection of a page turn command. Differentembodiments of the reading speed module 310 may measure time intervalsin various different ways. For example, the reading speed module 310 mayutilize eye tracking to locate where on a page a user is currentlyreading and determine the user's reading speed based on the progressionof the user's eyes.

An action measuring module 312 measures and records actions performed atlocations within the eBook text by the user while reading. The actionmeasuring module 312 may record actions including looking up thedefinitions of word(s), requesting the translation of word(s), addingannotations, and other actions performed by the client 110. The actionmeasuring module 310 stores the recorded actions in association with thelocations in the eBooks to which they pertain and/or the time at whichthe action occurred. The action measuring module 312 may also omitactions that may be unintentional or that are unusual and are likely toincorrectly characterize actions of a user.

A client interaction module 314 sends data reports to the metric server130. A data report may include, for example, an identifier of the client110 sending the report, an identifier of the eBook being read on theclient, an identifier of the user of the client, and a description ofthe text displayed on the page associated with the report (i.e., thebeginning and endpoints of the text on the page). The information in adata report may be anonymous to avoid disclosing private informationabout the user or client 110. In one embodiment, if a user does notprovide explicit approval to transmit data reports, such as byinteracting with a button on an approval dialog box displayed on theclient 110, the client interaction module 314 will not transmit datareports.

The data reports include timing reports and action reports. A timingreport describes the reading speed of a user of a client 110 as measuredby the reading speed module 310. In addition to the informationdescribed above, a timing report may include, for example, reading timeintervals and a description of the portion of the eBook to which thetime interval pertains (e.g., the beginning and endpoints of the textportion read in the time interval). A timing report may describe timeintervals for one or more pages. An action report, in turn, describes anaction performed at a client 110 as recorded by the action measuringmodule 312. In addition to the information described above, an actionreport may include an indication of the action that was performed, adescription of the location of the eBook for which the action wasperformed, the time at which the action occurred, and the estimatedreading position of the user when the action occurred.

The client interaction module 314 may send the data reportscontemporaneously with when the timing intervals and actions areobserved or send multiple reports in batch. For example, the clientinteraction module 314 may store the reports if network 120 connectivityis absent or limited and then send the reports once connectivity becomesavailable, or send reports at the completion of a chapter or otherlocation within the text. Likewise, the client interaction module 314may send reports upon initiating or deactivating of the readingfunctionality of the client 110.

In addition, the client interaction module 314 receives timinginformation and action information from the metric server 130. Thetiming information may indicate the user's reading speed or describeother timing-related aspects of the eBook enabling the reading module112 to determine a reader's current location in an eBook. “Readingspeed” generally refers to the amount of text a user can read in aspecified amount of time. For purposes of convenience, reading speed isoften described herein as words per minute (WPM). However, reading speedcan be represented in other ways, such as an amount of time required toread a word or other portion of text. The action information includesinstructions to the reading module 112 from the metric server 130identifying actions that should be automatically performed by thereading module 112 such as automatically defining a word or showingannotations. In one embodiment, permission is requested from the user toautomatically perform actions as instructed by the metric server 130.Collectively, the timing and action information describe readingstatistics of the users and eBooks, such as how quickly a given user orgroup of users tend to read portions of specific eBooks, actionsperformed in those portions of the eBooks, etc.

A position estimation module 316 estimates the user's current readinglocation on a displayed page of an eBook based on timing informationreceived from the metric server 130. In one embodiment, the positionestimation module 316 estimates the user's reading location based on theuser's reading speed. For example, the position estimation module 316may determine the user's reading location by measuring the time elapsedsince the page was turned and comparing the elapsed time with the user'sreading speed to determine how far into the displayed page the user hasread. Users may be provided with an opportunity to control whether theirreading position is estimated or otherwise determined.

The action module 318 performs actions as instructed by the actioninformation received from the metric server 130. In some cases, theaction module 318 measures the user's current reading position based onoutput from the position estimation module 316 to perform actions when auser is reading a target location in the text. In one embodiment, thetarget location is transmitted to the client 110 as part of the actioninformation.

The actions that may be performed by the action module 318 can vary. Theaction module 318 may place a bookmark at an estimated reading positionbased on a command from the user. In one embodiment, the estimatedlocation of the bookmark may be adjusted based on the reading speed ofthe user and the reading speeds of other readers of the particularpassage being read. Another action the action module 318 may perform isautomatically turning a page as a user's estimated reading positionreaches the end of the page. Similarly, the reading module 112 mayautomatically perform other relevant actions such as displaying thedefinition or translation of a word as the user's estimated readingposition approaches the position of the word. Likewise, the readingmodule 112 may automatically display annotations when the user reads aspecific portion of an eBook.

An information display module 320 displays information described by thetiming and action information received from the metric server 130 to theuser. The types of information displayed may vary in differentembodiments. The information display module 320 may display statisticsdescribing metrics tracked on an individual level, on a book level, orvarious other aggregate levels such as age, gender, time of day thereading occurred, or genre. For example, average reading speed or timespent reading may be divided into certain times of the day and presentedto the user to compare. A user can also be shown a timeline of when theuser read and how fast or how much the user read during those times. Theinformation display module 320 may display the statistics textually orgraphically. For example, the information display module 320 may displaya dialog box or other user interface (UI) element having a dashboardthat lists the user's time spent per chapter, time spent per book, timespent reading during certain portions of the day, words that have beendefined for the user previously, or words that may be helpful to definefor the user in an upcoming reading session. In one embodiment, theinformation display module 320 displays information in the margin oftext displayed on the client 110. In one embodiment, the informationdisplay module 320 displays how long it is expected to take a user toread a section of an eBook based on their average reading speed comparedto other users and the overall average reading speed of the section ofthe eBook.

FIG. 4 is a high-level block diagram illustrating a detailed view of themetric server 130 according to one embodiment. As shown in FIG. 4,multiple modules are included within the metric server 130. In someembodiments, the functions are distributed among the modules in adifferent manner than described herein. Moreover, the functions areperformed by other entities in some embodiments, such as by the client110 or reading module 112.

A report database 410 stores data reports received from the clients 110.As previously mentioned, the data reports include timing and actionreports. In one embodiment, the report database 410 stores the reportskeyed by the user identifier so that all reports associated withspecific users can be identified. The report database 410 may also storethe reports keyed by eBook or portions of an eBook, by client 110 or byother keys. In one embodiment, users may choose to provide noinformation to the metric server 130. If a user does not providepermission to the metric server 130 to gather information, the metricserver 130 will not retain any user information and will not gather dataabout that user.

In one embodiment, the report database 410 also stores timinginformation and action information generated by the metric server 130from the received reports. The timing information may includeinformation associated with specific users, such as average or otherreading speeds and speed modifiers describing the users' reading speedsrelative to the reading speed of other users. In addition, the timinginformation may include information associated with specific eBooks. TheeBook timing information may include reading times (e.g., averagereading times) for portions of an eBook. Thus, the eBook timinginformation may include the average reading times for entire eBooks,chapters of eBooks, and paragraphs, sentences, or other sections ofeBooks. The action information may include the number of times orfrequency of an action occurring at a particular location in the eBook.For example, the percentage of readers that look up the definition of aword may be stored. This data may be stored for the word globally amongall books, within a single eBook, or for specific instances of the wordin an eBook.

In one embodiment, the timing information and action information in thereport database 410 is updated as new data reports are received from theclients 110. Alternatively, the information may be updated periodically,after a certain amount of time has passed, after a certain number ofreports have been received, or based on other factors. The informationmay also be weighted based on the number of reports received for aparticular user/eBook or based on other factors.

A server interaction module 412 receives data reports from the clients110 and stores the reports in the report database 410. The data reportsinclude timing reports and action reports. In one embodiment, permissionis requested from the user before receiving data reports from theclients 110. In addition, the server interaction module 412 transmitstiming information, action information, and other information generatedby the metric server 130 to the clients 110. Additionally, the serverinteraction module 412 may send this information to other entities, suchas publishers, distributors, or other entities interested in theinformation. In one embodiment, if a user does not provide explicitapproval to transmit information to other entities, such as byinteracting with a button on an approval dialog box displayed on theclient 110, information will not be transmitted to other entities.

A filtering module 414 filters data reports received from the clients110 to discount reports that are likely erroneous or inaccurate. Thefiltering module 414 may filter out timing reports that indicateabnormally high or low reading time intervals. These timing reports mayresult from abnormalities such as the user rapidly flipping forwardthrough the pages of text or being interrupted while reading a page oftext. In one embodiment, the filtering module 414 compares reading timeintervals in the timing reports with lower and upper thresholds andfilters out timing reports not falling within the thresholds. Thethresholds can be based on the timing information stored in the timingdatabase or other factors.

Further, the filtering module 414 may filter action reports receivedfrom the clients 110 to remove reports containing actions that arelikely performed mistakenly or contain data that will undesirably skewdata stored in the report database 410. If actions are performed by auser that may skew the stored data, the action report reporting theactions may be weighted less than the actions of other users. Forexample, if a user looks up the definition of a large number of words ona page, the user may simply be testing the definition feature and thedata may be discounted by removing it or giving it lower weight thandata from other users. The functions of filtering module 414 may also beincorporated within the timing modules 112 of the clients 110 or anyother module.

An analysis module 416 analyzes the data reports in the report database410 and generates action information and timing information. The typesof analysis and information generated by the analysis module 416 canvary in different embodiments. The generated information is stored inthe report database 410.

In one embodiment the analysis module 416 generates action informationby analyzing the data reports to identify actions frequently performedby readers of particular eBooks and/or passages in eBooks relative toother actions. The analysis module 416 may then generate actioninformation for automatically performing these frequently-performedactions for other users reading the eBooks and/or passages. The analysismodule 416 may use a variety of different techniques to identify thefrequently-performed actions. One embodiment of the analysis module 416uses machine learning, e.g., classifier-based techniques, to identifyrelationships between actions, eBooks, and users and then generatesaction information based on these relationships. The relationships maybe based on characteristics of the users (e.g., reading speed),characteristics of the actions (e.g., different actions may be performedbased on different types of relationships), and characteristics of theeBooks (e.g., different types of actions may be performed for differenttypes of eBooks). For example, the analysis module 416 may use machinelearning to detect that readers who read non-fiction books below aparticular reading speed tend to request definitions of certain words,and then generate action information that automatically displaysdefinitions of those words if a reader's reading speed while reading anon-fiction book is below the particular speed.

Similarly, the analysis module 416 may generate action information for aparticular action if the analysis indicates that more than a thresholdamount of users perform the action. Thus, if the analysis performed bythe analysis module 416 indicates that a threshold amount (e.g., 75%) ofusers request a definition of a particular word in a passage of aneBook, the analysis module may generate action information causing thedefinition of the word to be displayed when other people read thepassage containing the word. Different actions may use differentthresholds. In addition, the thresholds may vary based oncharacteristics of the users, characteristics of the actions, andcharacteristics of the eBooks.

The analysis module 416 analyzes the data reports to generate timinginformation describing reading speeds of individual and aggregate users.To this end, the analysis module 416 calculates statistics from timingreports describing users' reading speeds. For example, the analysismodule 416 may calculate a user's average reading speed by dividing thenumber of words in a portion of one or more eBooks by the amount of timerequired by the user to read the portion.

Similarly, the analysis module 416 may generate combined timinginformation for a group of users of the clients 110. As with individualreaders, the combined timing information is a statistical measuredescribing the time required by the group of users to read a portion ofone or more eBooks. The analysis module 416 may select the group ofusers for which the combined timing information is generated based on avariety of factors. The analysis module 416 may select a group of userswho have read a particular eBook or set of eBooks. The analysis module416 can use this group of users to generate, e.g., the average readingspeed of the group of users for the eBook. The analysis module 416 mayalso select groups of users based on demographic information of theusers, geographic locations of the users, etc. This technique may proveuseful, for example, in determining the reading difficulty of anassignment to a class. A teacher may assign an eBook to a class anddecide how difficult passages of the text were to read based on metricssuch as time spent reading and amount of dictionary use.

Further, the analysis module 416 may generate timing informationassociated with specific types (e.g., genres) of eBooks. In general,reading speeds of users often vary for different types of eBooks. Forexample, the average user's reading speed might be slower for amathematical textbook than for a science fiction novel. Hence, theanalysis module 416 generates timing information that describes thereading speeds for specific types of eBooks for users and groups ofusers.

The analysis module 416 may represent the timing information in multipleways. For example, the timing information may indicate the reading speedof a particular user as a scale factor relative to a base reading speed.The base reading speed, may be determined based on reading speeds of agroup of users. For example, the timing information may describe auser's reading speed as being 110% of the base reading speed.

The analysis module 416 may account for actions performed by the userswhen generating timing information. Actions performed by users whilereading eBooks may affect the users' reading speeds. For example, a userthat looks up a dictionary definition of a word in a passage will likelypause to read the definition, thereby lowering the user's reportedreading speed for the passage. An embodiment of the analysis module 416therefore correlates the timing and action reports received from clients110 so that it may modify or adjust the users' reading speeds in thetiming information determined in response to the reports. For example,the analysis module 416 may filter out or otherwise discount timingreports from a client 110 if the action reports from the client indicateactions were performed while the passages described in the timingreports were being read.

The analysis module 416 may also generate additional information fromits analysis of the data reports. For example, the analysis module 416may determine points in eBooks at which users tend to start or stopreading. Identifying when a user tends to stop reading, and not finish,a book or article can prove useful in trying to identify what causesusers to cease reading. Additionally, the analysis module 416 maydetermine how often the definition of a word is looked up. Statisticaldata such as this may be provided for a specific instance of a word, orall instances in a portion of a book, an entire book, a genre of books,or overall in all analyzed eBooks. Knowing how often the definition of aword is requested by users can aid in assessing readability of writingsor aid authors in improving the readability of future writings. Authors,publishers, distributors, and marketers may use this and otherinformation to examine how users tend to read the eBooks. In oneembodiment, permission is requested from a user before performinganalysis on data received from one or more clients of the user.

FIG. 5 is a flowchart illustrating a method of analyzing eBook readingmetrics to generate action information that is transmitted to a clientaccording to one embodiment. While this description ascribes the stepsof the method to the metric server 130, the clients 110 or otherentities can perform some or all of the steps in other embodiments. Inaddition, the method can perform the steps in different orders orinclude different steps.

In step 510, the metric server 130 receives data reports, such as timingand action reports, from the clients 110. The timing reports describeuser reading time intervals for portions (e.g., pages) of eBooks. Theaction reports describe actions performed by users at certain locationswithin the eBooks. A given report may include identifiers of the client110, user, and eBook, a description of the text displayed on the pageassociated with the report, the time interval, a description of anaction performed on the client, and the time at which the action wasperformed or the time interval occurred. Users may be provided with anopportunity to control whether data reports are measured and/ortransmitted to the metric server 130. In step 512, the metric server 130filters the reports to remove reports that are likely erroneous orinaccurate, and stores the remaining reports in the report database 410.

In step 514, the metric server 130 analyzes the timing reports togenerate timing information describing reading speeds of users. In step516, the metric server 130 analyzes the action reports to identifyactions frequently performed by users reading eBooks at the clients 110,and generates action information for automatically performing theseactions at other clients. The metric server 130 transmits timing andaction information to the clients 110. A client 110 may use the receivedinformation to automatically perform an action when a user reads aparticular passage of a particular eBook. For example, the action mayindicate to automatically display the definition of a word when a userreads a particular passage of a particular eBook containing the word. Byusing the timing information, the client 110 can determine when the useris reading the passage and automatically display the definition at thattime.

Some portions of above description describe the embodiments in terms ofalgorithmic processes or operations. These algorithmic descriptions andrepresentations are commonly used by those skilled in the dataprocessing arts to convey the substance of their work effectively toothers skilled in the art. These operations, while describedfunctionally, computationally, or logically, are understood to beimplemented by computer programs comprising instructions for executionby a processor or equivalent electrical circuits, microcode, or thelike. Furthermore, it has also proven convenient at times, to refer tothese arrangements of functional operations as modules, without loss ofgenerality. The described operations and their associated modules may beembodied in software, firmware, hardware, or any combinations thereof.

As used herein any reference to “one embodiment” or “an embodiment”means that a particular element, feature, structure, or characteristicdescribed in connection with the embodiment is included in at least oneembodiment. The appearances of the phrase “in one embodiment” in variousplaces in the specification are not necessarily all referring to thesame embodiment.

Some embodiments may be described using the expression “coupled” and“connected” along with their derivatives. It should be understood thatthese terms are not intended as synonyms for each other. For example,some embodiments may be described using the term “connected” to indicatethat two or more elements are in direct physical or electrical contactwith each other. In another example, some embodiments may be describedusing the term “coupled” to indicate that two or more elements are indirect physical or electrical contact. The term “coupled,” however, mayalso mean that two or more elements are not in direct contact with eachother, but yet still co-operate or interact with each other. Theembodiments are not limited in this context.

As used herein, the terms “comprises,” “comprising,” “includes,”“including,” “has,” “having” or any other variation thereof, areintended to cover a non-exclusive inclusion. For example, a process,method, article, or apparatus that comprises a list of elements is notnecessarily limited to only those elements but may include otherelements not expressly listed or inherent to such process, method,article, or apparatus. Further, unless expressly stated to the contrary,“or” refers to an inclusive or and not to an exclusive or. For example,a condition A or B is satisfied by any one of the following: A is true(or present) and B is false (or not present), A is false (or notpresent) and B is true (or present), and both A and B are true (orpresent).

In addition, use of the “a” or “an” are employed to describe elementsand components of the embodiments herein. This is done merely forconvenience and to give a general sense of the disclosure. Thisdescription should be read to include one or at least one and thesingular also includes the plural unless it is obvious that it is meantotherwise.

Upon reading this disclosure, those of skill in the art will appreciatestill additional alternative structural and functional designs for asystem and a process for tracking and utilizing advanced reading metricsas described herein. Thus, while particular embodiments and applicationshave been illustrated and described, it is to be understood that thepresent invention is not limited to the precise construction andcomponents disclosed herein and that various modifications, changes andvariations which will be apparent to those skilled in the art may bemade in the arrangement, operation and details of the method andapparatus disclosed herein without departing from the spirit and scopeas defined in the appended claims.

1. A computer-implemented method comprising: detecting an action byperformed a user of a client at a location within an eBook; creating anaction report describing the action and the location within the eBookwhere the action was performed; transmitting a data report from theclient to a server, the data report comprising the action report,wherein the server is adapted to analyze the data report along with aplurality of data reports received from other clients to identify a sameaction that is performed by a plurality of users at an identifiedlocation within the eBook; receiving action information from the server,the action information indicating an action to perform when the userreads the identified location within the eBook; and automaticallyperforming the identified action at the identified location within theeBook based on the received action information.
 2. The method of claim1, further comprising: determining a reading speed of the user, whereinautomatically performing the identified action at the identifiedlocation within the eBook is also based on the determined reading speed.3. The method of claim 2, further comprising: determining when the useris reading the identified location within the eBook based on thedetermined reading speed.
 4. The method of claim 3, wherein determiningwhen the user is reading the identified location within the eBookcomprises: measuring a time elapsed since a page began being displayed;and determining how far into the displayed page the user has read basedon the elapsed time and the determined reading speed of the user.
 5. Themethod of claim 2, wherein determining the reading speed of the usercomprises: recording a plurality of reading time intervals while theuser is reading the eBook; creating the timing report describing theplurality of reading time intervals; transmitting the timing report fromthe client to the server in association with the data report; andreceiving timing information from the server, the timing informationgenerated responsive at least in part to the timing report andindicating a reading speed of the user.
 6. The method of claim 1,wherein the action information indicates to automatically displayinformation to a user of the client when the user reads the locationwithin the eBook.
 7. The method of claim 6, wherein the automaticallydisplayed information includes one or more of: a definition of a word atthe location within the eBook, a translation of a word at the locationwithin the eBook, and an annotation at the location within the eBook. 8.A computer-implemented system for comprising: a non-transitorycomputer-readable storage medium having executable computer programinstructions comprising instructions for: detecting an action byperformed a user of a client at a location within an eBook; creating anaction report describing the action and the location within the eBookwhere the action was performed; transmitting a data report from theclient to a server, the data report comprising the action report,wherein the server is adapted to analyze the data report along with aplurality of data reports received from other clients to identify a sameaction that is performed by a plurality of users at an identifiedlocation within the eBook; receiving action information from the server,the action information indicating an action to perform when the userreads the identified location within the eBook; and automaticallyperforming the identified action at the identified location within theeBook based on the received action information; and a processor forexecuting the computer program instructions.
 9. The system of claim 8,wherein the instructions further comprise: determining a reading speedof the user, wherein automatically performing the identified action atthe identified location within the eBook is also based on the determinedreading speed.
 10. The system of claim 9, wherein the instructionsfurther comprise: determining when the user is reading the identifiedlocation within the eBook based on the determined reading speed.
 11. Thesystem of claim 10, wherein determining when the user is reading theidentified location within the eBook comprises: measuring a time elapsedsince a page began being displayed; and determining how far into thedisplayed page the user has read based on the elapsed time and thedetermined reading speed of the user.
 12. The system of claim 9, whereindetermining the reading speed of the user comprises: recording aplurality of reading time intervals while the user is reading the eBook;creating the timing report describing the plurality of reading timeintervals; transmitting the timing report from the client to the serverin association with the data report; and receiving timing informationfrom the server, the timing information generated responsive at least inpart to the timing report and indicating a reading speed of the user.13. The system of claim 8, wherein the action information indicates toautomatically display information to a user of the client when the userreads the location within the eBook.
 14. The system of claim 13, whereinthe automatically displayed information includes one or more of: adefinition of a word at the location within the eBook, a translation ofa word at the location within the eBook, and an annotation at thelocation within the eBook.
 15. A non-transitory computer-readablestorage medium storing executable computer program instructions, theinstructions executable by a computer processor to perform stepscomprising: detecting an action by performed a user of a client at alocation within an eBook; creating an action report describing theaction and the location within the eBook where the action was performed;transmitting a data report from the client to a server, the data reportcomprising the action report, wherein the server is adapted to analyzethe data report along with a plurality of data reports received fromother clients to identify a same action that is performed by a pluralityof users at an identified location within the eBook; receiving actioninformation from the server, the action information indicating an actionto perform when the user reads the identified location within the eBook;and automatically performing the identified action at the identifiedlocation within the eBook based on the received action information. 16.The computer-readable storage medium of claim 15, the steps furthercomprising: determining a reading speed of the user, whereinautomatically performing the identified action at the identifiedlocation within the eBook is also based on the determined reading speed.17. The computer-readable storage medium of claim 16, the steps furthercomprising: determining when the user is reading the identified locationwithin the eBook based on the determined reading speed.
 18. Thecomputer-readable storage medium of claim 16, wherein determining thereading speed of the user comprises: recording a plurality of readingtime intervals while the user is reading the eBook; creating the timingreport describing the plurality of reading time intervals; transmittingthe timing report from the client to the server in association with thedata report; and receiving timing information from the server, thetiming information generated responsive at least in part to the timingreport and indicating a reading speed of the user.
 19. Thecomputer-readable storage medium of claim 15, wherein the actioninformation indicates to automatically display information to a user ofthe client when the user reads the location within the eBook.
 20. Thecomputer-readable storage medium of claim 19, wherein the automaticallydisplayed information includes one or more of: a definition of a word atthe location within the eBook, a translation of a word at the locationwithin the eBook, and an annotation at the location within the eBook.